<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>数组元素排序</title>
    <script>
      /*
        十大经典排序算法
        https://www.runoob.com/w3cnote/ten-sorting-algorithm.html

        这里以冒泡排序为例
        一种简单直观的排序算法。它重复地走访过要排序的数列，一次比较两个元素，如果他们的顺序错误就把他们交换过来。
        走访数列的工作是重复地进行直到没有再需要交换，也就是说该数列已经排序完成。

        步骤:
        比较相邻的元素。如果第一个比第二个大，就交换他们两个。
        对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对。这步做完后，最后的元素会是最大的数。
        针对所有的元素重复以上的步骤，除了最后一个。
        持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较
      */
      let arr = [2, 7, 5, 3, 2, 1, 4, 0]
      //注意: 默认情况下,排序使用大于小于比较的时候,只对数字类型有效,字符串类型无效,
      //因为字符串是以字典顺序排进行比较的,即0-9,A-Z按位比较
      //let arr = ['9', '12', '3', '0', '10']

      //冒泡排序 -- 升序排列
      for (let i = 0; i < arr.length - 1; i++) {
        for (let j = 0; j < arr.length - 1 - i; j++) {
          if (arr[j] > arr[j + 1]) {
            let temp = arr[j]
            arr[j] = arr[j + 1]
            arr[j + 1] = temp
          }
        }
      }
      console.log(arr)
    </script>
  </head>
  <body></body>
</html>
